Módulo 7

Deep Learning

Eloy Alvarado Narváez

Universidad Técnica Federico Santa María

Esteban Salgado Valenzuela

Universidad Técnica Federico Santa María

14 de diciembre de 2024

Deep Learning

Redes Neuronales

Una red neuronal artificial, ANN por sus siglas en inglés artificial neural network modelan la relación entre un conjunto de señales de entrada y una señal de salida usando un modelo derivado desde nuestro entendimiento de cómo funciona un cerebro biológico ante estímulos externos.

Tal como un cerebro usa una red de células interconectadas llamadas neuronas, una red neuronal usa una red de neuronas artificiales o nodos para resolver problemas de aprendizaje.

Red Neuronal de Capa Única

\[\begin{align*} f(X) &= \beta_0 + \sum_{k=1}^K \beta_k h_k(X) \\ &= \beta_0 + \sum_{k=1}^K \beta_k g\left(w_{k0} + \sum_{j=1}^p w_{kj} X_j\right). \end{align*}\]

Red Neuronal de Capa Única

  • \(A_k = h_k(X) = g\left(w_{k0} + \sum_{j=1}^p w_{kj} X_j\right)\) se denominan activaciones en la capa oculta.
  • \(g(z)\) se denomina función de activación. Las más populares son la función sigmoide y la rectificada lineal (ReLU), mostradas en la figura.
  • Las funciones de activación en las capas ocultas suelen ser no lineales, de lo contrario el modelo colapsaría a un modelo lineal.
  • Por lo tanto, las activaciones son como características derivadas: transformaciones no lineales de combinaciones lineales de las características.
  • El modelo se ajusta minimizando \(\sum_{i=1}^n (y_i - f(x_i))^2\).

Ejemplo: Dígitos MNIST

  • Dígitos escritos a mano, en escala de grises de tamaño \(28 \times 28\).
  • \(60.000\) imágenes de entrenamiento, \(10.000\) imágenes de prueba.
  • Las características son los 784 valores de píxeles en escala de grises \(\in (0, 255)\)
  • Las etiquetas corresponden a las clases de dígitos del 0 al 9.

Objetivo: construir un clasificador para predecir la clase de la imagen.

Ejemplo: Dígitos MNIST

Construimos una red neuronal de dos capas con:

  • 256 unidades en la primera capa,
  • 128 unidades en la segunda capa,
  • 10 unidades en la capa de salida.
  • Junto con los interceptos (sesgos), hay un total de 235,146 parámetros (pesos).

Ejemplo: Dígitos MNIST

Ejemplo: Dígitos MNIST

Detalles de la Capa de Salida

  • Sea \(Z_m = \beta_{m0} + \sum_{\ell=1}^{K_2} \beta_{m\ell} A_{\ell}^{(2)}\), donde \(m = 0, 1, \dots, 9\) son 10 combinaciones lineales de activaciones en la segunda capa.

  • La función de activación de salida codifica la función softmax:

\[ f_m(X) = \mathbb{P}(Y = m \mid X) = \frac{e^{Z_m}}{\sum_{\ell=0}^9 e^{Z_\ell}}. \]

  • Ajustamos el modelo minimizando la verosimilitud negativa multinomial (o entropía cruzada):

\[ - \sum_{i=1}^n \sum_{m=0}^9 y_{im} \log(f_m(x_i)). \]

  • \(y_{im}\) es 1 si la clase verdadera para la observación \(i\) es \(m\), de lo contrario es 0 — es decir, one-hot encoded.

Resultados

Método Error de prueba
Red neuronal + Regularización Ridge 2.3%
Red neuroral + Regularización Dropout 1.8%
Regresión logística multinomial 7.2%
Análisis discriminante lineal 12.7%
  • Al tener tantos parámetros, la regularización es esencial.
  • Problema ampliamente estudiado: las mejores tasas reportadas son \(< 0.5\%\).
  • La tasa de error humana se reporta alrededor de \(0.2\%\), o \(20\) de las \(10.000\) imágenes de prueba.

Redes Neuronales Convolucionales (CNN)

Redes Neuronales Convolucionales (CNN)

  • Las imágenes corresponder al conjunto de datos CIFAR100.
  • Imágenes a color de \(32 \times 32\) de \(100\) clases distintas.
  • \(50.000\) imágenes de entrenamiento, \(10.000\) imágenes de prueba.
  • Cada imagen es un arreglo tridimensional o un mapa de características: una matriz de \(32 \times 32 \times 3\) compuesta por números de 8 bits.
  • La última dimensión representa los tres canales de color: rojo, verde y azul.

¿Cómo funcionan las CNN?

  • La Redes Neuronales Convolucionales construye una imagen de manera jerárquica.
  • Los bordes y formas se reconocen y se combinan para formar estructuras más complejas, ensamblando finalmente la imagen objetivo.
  • Esta construcción jerárquica se logra utilizando capas de convolución y capas de pooling.

Convolución

Imágen de entrada: \(\begin{bmatrix} a & b & c \\ d & e & f \\ g & h & i \\ j & k & l \end{bmatrix}\)

Filtro de Convolución: \(\begin{bmatrix} \alpha & \beta \\ \gamma & \delta \end{bmatrix}\)

Imágen Convolucionada: \(\begin{bmatrix} a\alpha + b\beta + d\gamma + e\delta & b\alpha + c\beta + e\gamma + f\delta \\ d\alpha + e\beta + g\gamma + h\delta & e\alpha + f\beta + h\gamma + i\delta \\ g\alpha + h\beta + j\gamma + k\delta & h\alpha + i\beta + k\gamma + l\delta \end{bmatrix}.\)

Convolución

  • El filtro es, en sí mismo, una imagen y representa una pequeña forma, borde, etc.
  • Lo desplazamos sobre la imagen de entrada, evaluando coincidencias.
  • La puntuación se realiza mediante productos punto.
  • Si la subimagen de la imagen de entrada es similar al filtro, la puntuación será alta; de lo contrario, será baja.
  • Los filtros se aprenden durante el entrenamiento.

Ejemplo de convolución

  • La idea de la convolución con un filtro es encontrar patrones comunes que ocurren en diferentes partes de la imagen.
  • Los dos filtros mostrados aquí resaltan franjas verticales y horizontales.
  • El resultado de la convolución es un nuevo mapa de características .
  • Dado que las imágenes tienen tres canales de color, el filtro también los tiene: un filtro por canal, y los productos punto se suman.
  • Los pesos en los filtros son aprendidos por la red.

Ejemplo de convolución

Pooling

Max Pooling

\[ \begin{bmatrix} 1 & 2 & 5 & 3 \\ 3 & 0 & 1 & 2 \\ 2 & 1 & 3 & 4 \\ 1 & 1 & 2 & 0 \end{bmatrix} \rightarrow \begin{bmatrix} 3 & 5 \\ 2 & 4 \end{bmatrix}. \]

  • Cada bloque \(2 \times 2\) no superpuesto se reemplaza por su valor máximo.
  • Esto agudiza la identificación de características.
  • Permite invarianza de ubicación.
  • Reduce la dimensión en un factor de 4.

Pooling

Arquitectura de una CNN

  • Muchas capas de convolución + pooling.
  • Los filtros suelen ser pequeños, por ejemplo, \(3 \times 3\) en cada canal.
  • Cada filtro crea un nuevo canal en la capa de convolución.
  • A medida que el pooling reduce el tamaño, el número de filtros/canales generalmente aumenta.
  • El número de capas puede ser muy grande. Por ejemplo, ResNet-50, entrenada en la base de datos de imágenes ImageNet con 1000 clases, tiene 50 capas.

Redes Neuronales Recurrentes (RNN)

Los datos como secuencias

  • Los documentos son secuencias de palabras, y sus posiciones relativas tienen significado.
  • Series temporales, como datos climáticos o índices financieros.

Las RNNs (Redes Neuronales Recurrentes) construyen modelos que consideran la naturaleza secuencial de los datos y construyen una memoria del pasado.

  • La característica para cada observación es una secuencia de vectores:
    \[ X = \{X_1, X_2, \dots, X_L\}. \]

  • El objetivo \(Y\) a menudo es una variable o una clase.

  • Sin embargo, \(Y\) también puede ser una secuencia, como el mismo documento en un idioma diferente.

Red Neuronal Recurrente Simple

  • La capa oculta es una secuencia de vectores \(A_\ell\), que recibe como entrada \(X_\ell\) así como \(A_{\ell-1}\). \(A_\ell\) produce una salida \(O\ell\).

  • Los mismos pesos \(W\), \(U\) y \(B\) se utilizan en cada paso de la secuencia (de ahí el término recurrente).

  • La secuencia \(A_\ell\) representa un modelo en evolución para la respuesta, que se actualiza a medida que cada elemento \(X_\ell\) es procesado.

Elementos importantes al trabajar con DL.

  • Las redes neuronales intentan minimizar una función objetivo que es no-convexa

  • La mayoría de las aplicaciones y frameworks de trabajo utilizan Descenso del gradiente (que de por sí es lento)

  • Es recomendable utilizar un early stopping (o parada temprana) para que el modelo no sobreajuste.

  • En vez de la red aprenda de todos los datos disponibles al mismo tiempo, es recomendable usar pequeños minibatch de datos.

  • Por ejemplo, si tengo \(60.000\) observaciones, podemos ir calculando en grupos de 128 observaciones, para un total de \(60.000/128 \approx 469\) épocas (epochs) de cómputo.

¿Cómo evitamos que la red sobreajuste?

Dropout learning

El método de dropout learning, elimina conexiones entre neuronas de manera aleatoria con una probabilidad dada, y reescala los pesos de las conexiones mantenidas.

¿Cómo evitamos que la red sobreajuste?

Data Augmentation (aumento de datos)

  • El aumento de datos (data augmentation) aplica transformaciones naturales a cada imagen de entrenamiento, creando una nube de imágenes alrededor de cada imagen de entrenamiento original.
  • La etiqueta se deja sin cambios (sigue siendo, por ejemplo, un tigre).

Software

Tensorflow

Software

Pytorch